NAND flash memory is composed of a number of blocks, each of which is made up of a number of pages. One page is divided into a data region and a spare region.
Reading and writing operations for NAND flash can be performed on a page-by-page basis, but overwriting and erasing operation are performed on a block-by-block basis.
A conventional NAND flash memory uses a hardware-based error correction code (ECC) calculation method for correcting errors in data inputted thereto or outputted therefrom. The hardware-based ECC calculation method provides a higher operation speed than a software-based method. However, since an error correction code is computed after all the data in the data region is read in the hardware-based ECC calculation method, it is disadvantageous that all the data has to be read even in case that small amount of data is stored.